package it.unicam.fishpass.prism;

import it.unicam.fishpass.prism.editor.EditorMenuBar;
import it.unicam.fishpass.prism.editor.EditorPalette;

import java.awt.Color;
import java.awt.Font;
import java.awt.Label;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.net.URL;
import java.text.NumberFormat;
import java.util.Iterator;
import java.util.List;

import javafx.scene.shape.Ellipse;

import javax.swing.ImageIcon;
import javax.swing.UIManager;

import org.w3c.dom.Document;

import com.alee.laf.WebLookAndFeel;
import com.mxgraph.io.mxCodec;
import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxGeometry;
import com.mxgraph.model.mxICell;
import com.mxgraph.model.mxIGraphModel;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.swing.util.mxGraphTransferable;
import com.mxgraph.swing.util.mxSwingConstants;
import com.mxgraph.util.mxConstants;
import com.mxgraph.util.mxEvent;
import com.mxgraph.util.mxEventObject;
import com.mxgraph.util.mxEventSource.mxIEventListener;
import com.mxgraph.util.mxPoint;
import com.mxgraph.util.mxResources;
import com.mxgraph.util.mxUtils;
import com.mxgraph.view.mxCellState;
import com.mxgraph.view.mxGraph;

public class GraphEditor extends BasicGraphEditor {
	/**
	 * 
	 */
	private static final long serialVersionUID = -4601740824088314699L;

	/**
	 * Holds the shared number formatter.
	 * 
	 * @see NumberFormat#getInstance()
	 */
	public static final NumberFormat numberFormat = NumberFormat.getInstance();

	/**
	 * Holds the URL for the icon to be used as a handle for creating new
	 * connections. This is currently unused.
	 */
	public static URL url = null;

	// GraphEditor.class.getResource("/com/mxgraph/examples/swing/images/connector.gif");

	public GraphEditor() {
		this("mxGraph Editor", new CustomGraphComponent(new CustomGraph()));

	}

	/**
	 * 
	 */
	public GraphEditor(String appTitle, mxGraphComponent component) {
		super(appTitle, component);
		final mxGraph graph = graphComponent.getGraph();

		// Creates the shapes palette
		EditorPalette shapesPalette = insertPalette(mxResources.get("shapes"));
		// EditorPalette imagesPalette =
		// insertPalette(mxResources.get("images"));
		// EditorPalette symbolsPalette =
		// insertPalette(mxResources.get("symbols"));

		// Sets the edge template to be used for creating new edges if an edge
		// is clicked in the shape palette
		shapesPalette.addListener(mxEvent.SELECT, new mxIEventListener() {
			public void invoke(Object sender, mxEventObject evt) {
				Object tmp = evt.getProperty("transferable");

				if (tmp instanceof mxGraphTransferable) {
					mxGraphTransferable t = (mxGraphTransferable) tmp;
					Object cell = t.getCells()[0];

					if (graph.getModel().isEdge(cell)) {
						((CustomGraph) graph).setEdgeTemplate(cell);
					}
				}
			}

		});

		// Adds some template cells for dropping into the graph
		shapesPalette.addTemplate(
				"Location",
				new ImageIcon(GraphEditor.class
						.getResource("/images/rectangle.png")), null, 160, 120,
				"");
		graphComponent.setConnectable(true);
		shapesPalette.addTemplate(
				"Multiarc",
				new ImageIcon(GraphEditor.class
						.getResource("/images/ellipse.png")), "ellipse", 40,
				40, "");
		// graphComponent.setConnectable(false);
		;

		/*
		 * shapesPalette .addTemplate( "Double Ellipse", new ImageIcon(
		 * GraphEditor.class .getResource("/images/doubleellipse.png")),
		 * "ellipse;shape=doubleEllipse", 160, 160, ""); shapesPalette
		 * .addTemplate( "Triangle", new ImageIcon( GraphEditor.class
		 * .getResource("/images/triangle.png")), "triangle", 120, 160, "");
		 * shapesPalette .addTemplate( "Rhombus", new ImageIcon(
		 * GraphEditor.class .getResource("/images/rhombus.png")), "rhombus",
		 * 160, 160, ""); shapesPalette .addTemplate( "Horizontal Line", new
		 * ImageIcon( GraphEditor.class .getResource("/images/hline.png")),
		 * "line", 160, 10, ""); shapesPalette .addTemplate( "Hexagon", new
		 * ImageIcon( GraphEditor.class .getResource("/images/hexagon.png")),
		 * "shape=hexagon", 160, 120, ""); shapesPalette .addTemplate(
		 * "Cylinder", new ImageIcon( GraphEditor.class
		 * .getResource("/images/cylinder.png")), "shape=cylinder", 120, 160,
		 * ""); shapesPalette .addTemplate( "Actor", new ImageIcon(
		 * GraphEditor.class .getResource("/images/actor.png")), "shape=actor",
		 * 120, 160, ""); shapesPalette .addTemplate( "Cloud", new ImageIcon(
		 * GraphEditor.class .getResource("/images/cloud.png")),
		 * "ellipse;shape=cloud", 160, 120, "");
		 */
		shapesPalette.addEdgeTemplate("Straight", new ImageIcon(
				GraphEditor.class.getResource("/images/straight.png")),
				"straight", 120, 120, "");
		/*
		 * shapesPalette .addEdgeTemplate( "Horizontal Connector", new
		 * ImageIcon( GraphEditor.class .getResource("/images/connect.png")),
		 * null, 100, 100, ""); shapesPalette .addEdgeTemplate(
		 * "Vertical Connector", new ImageIcon( GraphEditor.class
		 * .getResource("/images/vertical.png")), "vertical", 100, 100, "");
		 * shapesPalette .addEdgeTemplate( "Entity Relation", new ImageIcon(
		 * GraphEditor.class .getResource("/images/entity.png")), "entity", 100,
		 * 100, ""); shapesPalette .addEdgeTemplate( "Arrow", new ImageIcon(
		 * GraphEditor.class .getResource("/images/arrow.png")), "arrow", 120,
		 * 120, "");
		 * 
		 * imagesPalette .addTemplate( "Bell", new ImageIcon( GraphEditor.class
		 * .getResource("/images/bell.png")), "image;image=/images/bell.png",
		 * 50, 50, "Bell"); imagesPalette .addTemplate( "Box", new ImageIcon(
		 * GraphEditor.class .getResource("/images/box.png")),
		 * "image;image=/images/box.png", 50, 50, "Box"); imagesPalette
		 * .addTemplate( "Cube", new ImageIcon( GraphEditor.class
		 * .getResource("/images/cube_green.png")),
		 * "image;image=/images/cube_green.png", 50, 50, "Cube"); imagesPalette
		 * .addTemplate( "User", new ImageIcon( GraphEditor.class
		 * .getResource("/images/dude3.png")),
		 * "roundImage;image=/images/dude3.png", 50, 50, "User"); imagesPalette
		 * .addTemplate( "Earth", new ImageIcon( GraphEditor.class
		 * .getResource("/images/earth.png")),
		 * "roundImage;image=/images/earth.png", 50, 50, "Earth"); imagesPalette
		 * .addTemplate( "Gear", new ImageIcon( GraphEditor.class
		 * .getResource("/images/gear.png")),
		 * "roundImage;image=/images/gear.png", 50, 50, "Gear"); imagesPalette
		 * .addTemplate( "Home", new ImageIcon( GraphEditor.class
		 * .getResource("/images/house.png")), "image;image=/images/house.png",
		 * 50, 50, "Home"); imagesPalette .addTemplate( "Package", new
		 * ImageIcon( GraphEditor.class .getResource("/images/package.png")),
		 * "image;image=/images/package.png", 50, 50, "Package"); imagesPalette
		 * .addTemplate( "Printer", new ImageIcon( GraphEditor.class
		 * .getResource("/images/printer.png")),
		 * "image;image=/images/printer.png", 50, 50, "Printer"); imagesPalette
		 * .addTemplate( "Server", new ImageIcon( GraphEditor.class
		 * .getResource("/images/server.png")),
		 * "image;image=/images/server.png", 50, 50, "Server"); imagesPalette
		 * .addTemplate( "Workplace", new ImageIcon( GraphEditor.class
		 * .getResource("/images/workplace.png")),
		 * "image;image=/images/workplace.png", 50, 50, "Workplace");
		 * imagesPalette .addTemplate( "Wrench", new ImageIcon(
		 * GraphEditor.class .getResource("/images/wrench.png")),
		 * "roundImage;image=/images/wrench.png", 50, 50, "Wrench");
		 * 
		 * symbolsPalette .addTemplate( "Cancel", new ImageIcon(
		 * GraphEditor.class .getResource("/images/cancel_end.png")),
		 * "roundImage;image=/images/cancel_end.png", 80, 80, "Cancel");
		 * symbolsPalette .addTemplate( "Error", new ImageIcon(
		 * GraphEditor.class .getResource("/images/error.png")),
		 * "roundImage;image=/images/error.png", 80, 80, "Error");
		 * symbolsPalette .addTemplate( "Event", new ImageIcon(
		 * GraphEditor.class .getResource("/images/event.png")),
		 * "roundImage;image=/images/event.png", 80, 80, "Event");
		 * symbolsPalette .addTemplate( "Fork", new ImageIcon( GraphEditor.class
		 * .getResource("/images/fork.png")),
		 * "rhombusImage;image=/images/fork.png", 80, 80, "Fork");
		 * symbolsPalette .addTemplate( "Inclusive", new ImageIcon(
		 * GraphEditor.class .getResource("/images/inclusive.png")),
		 * "rhombusImage;image=/images/inclusive.png", 80, 80, "Inclusive");
		 * symbolsPalette .addTemplate( "Link", new ImageIcon( GraphEditor.class
		 * .getResource("/images/link.png")),
		 * "roundImage;image=/images/link.png", 80, 80, "Link"); symbolsPalette
		 * .addTemplate( "Merge", new ImageIcon( GraphEditor.class
		 * .getResource("/images/merge.png")),
		 * "rhombusImage;image=/images/merge.png", 80, 80, "Merge");
		 * symbolsPalette .addTemplate( "Message", new ImageIcon(
		 * GraphEditor.class .getResource("/images/message.png")),
		 * "roundImage;image=/images/message.png", 80, 80, "Message");
		 * symbolsPalette .addTemplate( "Multiple", new ImageIcon(
		 * GraphEditor.class .getResource("/images/multiple.png")),
		 * "roundImage;image=/images/multiple.png", 80, 80, "Multiple");
		 * symbolsPalette .addTemplate( "Rule", new ImageIcon( GraphEditor.class
		 * .getResource("/images/rule.png")),
		 * "roundImage;image=/images/rule.png", 80, 80, "Rule"); symbolsPalette
		 * .addTemplate( "Terminate", new ImageIcon( GraphEditor.class
		 * .getResource("/images/terminate.png")),
		 * "roundImage;image=/images/terminate.png", 80, 80, "Terminate");
		 * symbolsPalette .addTemplate( "Timer", new ImageIcon(
		 * GraphEditor.class .getResource("/images/timer.png")),
		 * "roundImage;image=/images/timer.png", 80, 80, "Timer");
		 */
	}

	/**
	 * 
	 */
	public static class CustomGraphComponent extends mxGraphComponent {

		/**
		 * 
		 */
		private static final long serialVersionUID = -6833603133512882012L;

		/**
		 * 
		 * @param graph
		 */
		public CustomGraphComponent(mxGraph graph) {
			super(graph);

			// Sets switches typically used in an editor
			setPageVisible(true);
			setGridVisible(true);
			setToolTips(true);
			getConnectionHandler().setCreateTarget(true);

			// Loads the defalt stylesheet from an external file
			mxCodec codec = new mxCodec();
			Document doc = mxUtils.loadDocument(GraphEditor.class.getResource(
					"resources/default-style.xml").toString());
			codec.decode(doc.getDocumentElement(), graph.getStylesheet());

			// Sets the background to white
			getViewport().setOpaque(true);
			getViewport().setBackground(Color.WHITE);
		}

		/**
		 * Overrides drop behaviour to set the cell style if the target is not a
		 * valid drop target and the cells are of the same type (eg. both
		 * vertices or both edges).
		 */
		public Object[] importCells(Object[] cells, double dx, double dy,
				Object target, Point location) {
			if (target == null && cells.length == 1 && location != null) {
				target = getCellAt(location.x, location.y);

				if (target instanceof mxICell && cells[0] instanceof mxICell) {
					mxICell targetCell = (mxICell) target;
					mxICell dropCell = (mxICell) cells[0];

					if (targetCell.isVertex() == dropCell.isVertex()
							|| targetCell.isEdge() == dropCell.isEdge()) {
						mxIGraphModel model = graph.getModel();
						model.setStyle(target, model.getStyle(cells[0]));
						graph.setSelectionCell(target);

						return null;
					}
				}
			}

			return super.importCells(cells, dx, dy, target, location);
		}

	}

	/**
	 * A graph that creates new edges from a given template edge.
	 */
	public static class CustomGraph extends mxGraph {
		/**
		 * Holds the edge to be used as a template for inserting new edges.
		 */
		protected Object edgeTemplate;

		/**
		 * Custom graph that defines the alternate edge style to be used when
		 * the middle control point of edges is double clicked (flipped).
		 */
		public CustomGraph() {
			setAlternateEdgeStyle("edgeStyle=mxEdgeStyle.ElbowConnector;elbow=vertical");

		}

		/**
		 * Sets the edge template to be used to inserting edges.
		 */
		public void setEdgeTemplate(Object template) {
			edgeTemplate = template;
		}

		/**
		 * Prints out some useful information about the cell in the tooltip.
		 */
		public String getToolTipForCell(Object cell) {
			String tip = "<html>";
			mxGeometry geo = getModel().getGeometry(cell);
			mxCellState state = getView().getState(cell);

			if (getModel().isEdge(cell)) {
				tip += "points={";

				if (geo != null) {
					List<mxPoint> points = geo.getPoints();

					if (points != null) {
						Iterator<mxPoint> it = points.iterator();

						while (it.hasNext()) {
							mxPoint point = it.next();
							tip += "[x=" + numberFormat.format(point.getX())
									+ ",y=" + numberFormat.format(point.getY())
									+ "],";
						}

						tip = tip.substring(0, tip.length() - 1);
					}
				}

				tip += "}<br>";
				tip += "absPoints={";

				if (state != null) {

					for (int i = 0; i < state.getAbsolutePointCount(); i++) {
						mxPoint point = state.getAbsolutePoint(i);
						tip += "[x=" + numberFormat.format(point.getX())
								+ ",y=" + numberFormat.format(point.getY())
								+ "],";
					}

					tip = tip.substring(0, tip.length() - 1);
				}

				tip += "}";
			} else {
				tip += "geo=[";

				if (geo != null) {
					tip += "x=" + numberFormat.format(geo.getX()) + ",y="
							+ numberFormat.format(geo.getY()) + ",width="
							+ numberFormat.format(geo.getWidth()) + ",height="
							+ numberFormat.format(geo.getHeight());
				}

				tip += "]<br>";
				tip += "state=[";

				if (state != null) {
					tip += "x=" + numberFormat.format(state.getX()) + ",y="
							+ numberFormat.format(state.getY()) + ",width="
							+ numberFormat.format(state.getWidth())
							+ ",height="
							+ numberFormat.format(state.getHeight());
				}

				tip += "]";
			}

			mxPoint trans = getView().getTranslate();

			tip += "<br>scale=" + numberFormat.format(getView().getScale())
					+ ", translate=[x=" + numberFormat.format(trans.getX())
					+ ",y=" + numberFormat.format(trans.getY()) + "]";
			tip += "</html>";

			return tip;
		}

		/**
		 * Overrides the method to use the currently selected edge template for
		 * new edges.
		 * 
		 * @param graph
		 * @param parent
		 * @param id
		 * @param value
		 * @param source
		 * @param target
		 * @param style
		 * @return
		 */
		public Object createEdge(Object parent, String id, Object value,
				Object source, Object target, String style) {
			if (edgeTemplate != null) {
				mxCell edge = (mxCell) cloneCells(new Object[] { edgeTemplate })[0];
				edge.setId(id);

				return edge;
			}

			return super.createEdge(parent, id, value, source, target, style);
		}

		public Object insertEdge(Object parent, String id, Object value,
				Object source, Object target, String style) {
			return super.insertEdge(parent, id, value, source, target, style);
		}

		// don't let that a connected edge can be moved away
		public boolean isDisconnectOnMove() {
			return false;
		}

		public boolean dragEnabled() {
			return true;
		}

		public boolean dropEnabled() {
			return true;
		}
		/*
		 * @Override public Object[] addAllEdges(Object[] arg0) {
		 * System.out.println("1"); return super.addAllEdges(arg0); }
		 * 
		 * @Override public Object addCell(Object arg0, Object arg1, Integer
		 * arg2, Object arg3, Object arg4) { System.out.println("2"); return
		 * super.addCell(arg0, arg1, arg2, arg3, arg4); }
		 * 
		 * @Override public Object addCell(Object arg0, Object arg1) {
		 * System.out.println("3"); return super.addCell(arg0, arg1); }
		 * 
		 * @Override public Object addCell(Object arg0) {
		 * System.out.println("4"); return super.addCell(arg0); }
		 * 
		 * @Override public Object[] addCells(Object[] arg0, Object arg1,
		 * Integer arg2, Object arg3, Object arg4) { System.out.println("5");
		 * return super.addCells(arg0, arg1, arg2, arg3, arg4); }
		 * 
		 * @Override public Object[] addCells(Object[] arg0, Object arg1,
		 * Integer arg2) { System.out.println("6"); return super.addCells(arg0,
		 * arg1, arg2); }
		 * 
		 * @Override public Object[] addCells(Object[] arg0, Object arg1) {
		 * System.out.println("7"); return super.addCells(arg0, arg1); }
		 * 
		 * @Override public Object[] addCells(Object[] arg0) {
		 * System.out.println("8"); return super.addCells(arg0); }
		 * 
		 * @Override public Object addEdge(Object arg0, Object arg1, Object
		 * arg2, Object arg3, Integer arg4) { System.out.println("9"); return
		 * super.addEdge(arg0, arg1, arg2, arg3, arg4); }
		 * 
		 * @Override public void addImageBundle(mxImageBundle arg0) {
		 * System.out.println("10"); super.addImageBundle(arg0); }
		 * 
		 * @Override public void
		 * addPropertyChangeListener(PropertyChangeListener arg0) {
		 * System.out.println("11"); super.addPropertyChangeListener(arg0); }
		 * 
		 * @Override public void addPropertyChangeListener(String arg0,
		 * PropertyChangeListener arg1) { System.out.println("12");
		 * super.addPropertyChangeListener(arg0, arg1); }
		 * 
		 * @Override public void addSelectionCell(Object arg0) {
		 * System.out.println("13"); super.addSelectionCell(arg0); }
		 * 
		 * @Override public void addSelectionCells(Object[] arg0) {
		 * System.out.println("14"); super.addSelectionCells(arg0); }
		 * 
		 * @Override public Object[] alignCells(String arg0, Object[] arg1,
		 * Object arg2) { System.out.println("15"); return
		 * super.alignCells(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] alignCells(String arg0, Object[] arg1) {
		 * System.out.println("16"); return super.alignCells(arg0, arg1); }
		 * 
		 * @Override public Object[] alignCells(String arg0) {
		 * System.out.println("17"); return super.alignCells(arg0); }
		 * 
		 * @Override public void cellConnected(Object arg0, Object arg1, boolean
		 * arg2, mxConnectionConstraint arg3) { System.out.println("18");
		 * super.cellConnected(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override protected void cellDrawn(mxICanvas arg0, mxCellState arg1,
		 * Object arg2, Object arg3) { System.out.println("19");
		 * super.cellDrawn(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public void cellLabelChanged(Object arg0, Object arg1,
		 * boolean arg2) { System.out.println("20");
		 * super.cellLabelChanged(arg0, arg1, arg2); }
		 * 
		 * @Override public void cellSizeUpdated(Object arg0, boolean arg1) {
		 * System.out.println("21"); super.cellSizeUpdated(arg0, arg1); }
		 * 
		 * @Override public void cellsAdded(Object[] arg0, Object arg1, Integer
		 * arg2, Object arg3, Object arg4, boolean arg5, boolean arg6) {
		 * System.out.println("22"); super.cellsAdded(arg0, arg1, arg2, arg3,
		 * arg4, arg5, arg6); }
		 * 
		 * @Override public void cellsAdded(Object[] arg0, Object arg1, Integer
		 * arg2, Object arg3, Object arg4, boolean arg5) {
		 * System.out.println("23"); super.cellsAdded(arg0, arg1, arg2, arg3,
		 * arg4, arg5); }
		 * 
		 * @Override public void cellsFolded(Object[] arg0, boolean arg1,
		 * boolean arg2, boolean arg3) { System.out.println("24");
		 * super.cellsFolded(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public void cellsFolded(Object[] arg0, boolean arg1,
		 * boolean arg2) { System.out.println("25"); super.cellsFolded(arg0,
		 * arg1, arg2); }
		 * 
		 * @Override public void cellsMoved(Object[] arg0, double arg1, double
		 * arg2, boolean arg3, boolean arg4) { System.out.println("26");
		 * super.cellsMoved(arg0, arg1, arg2, arg3, arg4); }
		 * 
		 * @Override public void cellsOrdered(Object[] arg0, boolean arg1) {
		 * System.out.println("27"); super.cellsOrdered(arg0, arg1); }
		 * 
		 * @Override public void cellsRemoved(Object[] arg0) {
		 * System.out.println("28"); super.cellsRemoved(arg0); }
		 * 
		 * @Override public void cellsResized(Object[] arg0, mxRectangle[] arg1)
		 * { System.out.println("29"); super.cellsResized(arg0, arg1); }
		 * 
		 * @Override public void cellsToggled(Object[] arg0, boolean arg1) {
		 * System.out.println("30"); super.cellsToggled(arg0, arg1); }
		 * 
		 * @Override public void clearSelection() { System.out.println("31");
		 * super.clearSelection(); }
		 * 
		 * @Override public Object[] cloneCells(Object[] arg0, boolean arg1) {
		 * System.out.println("32"); return super.cloneCells(arg0, arg1); }
		 * 
		 * @Override public Object[] cloneCells(Object[] arg0) {
		 * System.out.println("33"); return super.cloneCells(arg0); }
		 * 
		 * @Override public Object connectCell(Object arg0, Object arg1, boolean
		 * arg2, mxConnectionConstraint arg3) { System.out.println("34"); return
		 * super.connectCell(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public Object connectCell(Object arg0, Object arg1, boolean
		 * arg2) { System.out.println("35"); return super.connectCell(arg0,
		 * arg1, arg2); }
		 * 
		 * @Override public void constrainChild(Object arg0) {
		 * System.out.println("36"); super.constrainChild(arg0); }
		 * 
		 * @Override public String convertValueToString(Object arg0) {
		 * System.out.println("37"); return super.convertValueToString(arg0); }
		 * 
		 * @Override protected mxGraphView createGraphView() {
		 * System.out.println("38"); return super.createGraphView(); }
		 * 
		 * @Override public Object createGroupCell(Object[] arg0) {
		 * System.out.println("39"); return super.createGroupCell(arg0); }
		 * 
		 * @Override protected mxGraphSelectionModel createSelectionModel() {
		 * System.out.println("40"); return super.createSelectionModel(); }
		 * 
		 * @Override protected mxStylesheet createStylesheet() {
		 * System.out.println("41"); return super.createStylesheet(); }
		 * 
		 * @Override public Object createVertex(Object arg0, String arg1, Object
		 * arg2, double arg3, double arg4, double arg5, double arg6, String
		 * arg7, boolean arg8) { System.out.println("42"); return
		 * super.createVertex(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7,
		 * arg8); }
		 * 
		 * @Override public Object createVertex(Object arg0, String arg1, Object
		 * arg2, double arg3, double arg4, double arg5, double arg6, String
		 * arg7) { System.out.println("43"); return super.createVertex(arg0,
		 * arg1, arg2, arg3, arg4, arg5, arg6, arg7); }
		 * 
		 * @Override public void disconnectGraph(Object[] arg0) {
		 * System.out.println("44"); super.disconnectGraph(arg0); }
		 * 
		 * @Override public void drawCell(mxICanvas arg0, Object arg1) {
		 * System.out.println("45"); super.drawCell(arg0, arg1); }
		 * 
		 * @Override public void drawGraph(mxICanvas arg0) {
		 * System.out.println("46"); super.drawGraph(arg0); }
		 * 
		 * @Override public void drawState(mxICanvas arg0, mxCellState arg1,
		 * boolean arg2) { System.out.println("47"); super.drawState(arg0, arg1,
		 * arg2); }
		 * 
		 * @Override public void enterGroup() { System.out.println("48");
		 * super.enterGroup(); }
		 * 
		 * @Override public void enterGroup(Object arg0) {
		 * System.out.println("49"); super.enterGroup(arg0); }
		 * 
		 * @Override public void exitGroup() { System.out.println("50");
		 * super.exitGroup(); }
		 * 
		 * @Override public void extendParent(Object arg0) {
		 * System.out.println("51"); super.extendParent(arg0); }
		 * 
		 * @Override public List<Object> findTreeRoots(Object arg0, boolean
		 * arg1, boolean arg2) { System.out.println("52"); return
		 * super.findTreeRoots(arg0, arg1, arg2); }
		 * 
		 * @Override public List<Object> findTreeRoots(Object arg0, boolean
		 * arg1) { System.out.println("53"); return super.findTreeRoots(arg0,
		 * arg1); }
		 * 
		 * @Override public List<Object> findTreeRoots(Object arg0) {
		 * System.out.println("54"); return super.findTreeRoots(arg0); }
		 * 
		 * @Override public Object flipEdge(Object arg0) {
		 * System.out.println("55"); return super.flipEdge(arg0); }
		 * 
		 * @Override public Object[] foldCells(boolean arg0, boolean arg1,
		 * Object[] arg2, boolean arg3) { System.out.println("56"); return
		 * super.foldCells(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public Object[] foldCells(boolean arg0, boolean arg1,
		 * Object[] arg2) { System.out.println("57"); return
		 * super.foldCells(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] foldCells(boolean arg0, boolean arg1) {
		 * System.out.println("58"); return super.foldCells(arg0, arg1); }
		 * 
		 * @Override public Object[] foldCells(boolean arg0) {
		 * System.out.println("59"); return super.foldCells(arg0); }
		 * 
		 * @Override public mxConnectionConstraint[]
		 * getAllConnectionConstraints( mxCellState arg0, boolean arg1) {
		 * System.out.println("60"); return
		 * super.getAllConnectionConstraints(arg0, arg1); }
		 * 
		 * @Override public Object[] getAllEdges(Object[] arg0) {
		 * System.out.println("61"); return super.getAllEdges(arg0); }
		 * 
		 * @Override public String getAlternateEdgeStyle() {
		 * System.out.println("62"); return super.getAlternateEdgeStyle(); }
		 * 
		 * @Override public int getBorder() { System.out.println("63"); return
		 * super.getBorder(); }
		 * 
		 * @Override public mxRectangle getBoundingBox(Object arg0, boolean
		 * arg1, boolean arg2) { System.out.println("64"); return
		 * super.getBoundingBox(arg0, arg1, arg2); }
		 * 
		 * @Override public mxRectangle getBoundingBox(Object arg0, boolean
		 * arg1) { System.out.println("65"); return super.getBoundingBox(arg0,
		 * arg1); }
		 * 
		 * @Override public mxRectangle getBoundingBox(Object arg0) {
		 * System.out.println("66"); return super.getBoundingBox(arg0); }
		 * 
		 * @Override public mxRectangle getBoundingBoxFromGeometry(Object[]
		 * arg0) { System.out.println("67"); return
		 * super.getBoundingBoxFromGeometry(arg0); }
		 * 
		 * @Override public mxRectangle getBoundsForCells(Object[] arg0, boolean
		 * arg1, boolean arg2, boolean arg3) { System.out.println("68"); return
		 * super.getBoundsForCells(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public mxRectangle getBoundsForGroup(Object arg0, Object[]
		 * arg1, double arg2) { System.out.println("69"); return
		 * super.getBoundsForGroup(arg0, arg1, arg2); }
		 * 
		 * @Override public mxRectangle getCellBounds(Object arg0, boolean arg1,
		 * boolean arg2, boolean arg3) { System.out.println("70"); return
		 * super.getCellBounds(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public mxRectangle getCellBounds(Object arg0, boolean arg1,
		 * boolean arg2) { System.out.println("71"); return
		 * super.getCellBounds(arg0, arg1, arg2); }
		 * 
		 * @Override public mxRectangle getCellBounds(Object arg0, boolean arg1)
		 * { System.out.println("72"); return super.getCellBounds(arg0, arg1); }
		 * 
		 * @Override public mxRectangle getCellBounds(Object arg0) {
		 * System.out.println("73"); return super.getCellBounds(arg0); }
		 * 
		 * @Override public mxRectangle getCellContainmentArea(Object arg0) {
		 * System.out.println("74"); return super.getCellContainmentArea(arg0);
		 * }
		 * 
		 * @Override public mxGeometry getCellGeometry(Object arg0) {
		 * System.out.println("75"); return super.getCellGeometry(arg0); }
		 * 
		 * @Override public Map<String, Object> getCellStyle(Object arg0) {
		 * System.out.println("76"); return super.getCellStyle(arg0); }
		 * 
		 * @Override public String getCellValidationError(Object arg0) {
		 * System.out.println("77"); return super.getCellValidationError(arg0);
		 * }
		 * 
		 * @Override public Object[] getCellsBeyond(double arg0, double arg1,
		 * Object arg2, boolean arg3, boolean arg4) { System.out.println("78");
		 * return super.getCellsBeyond(arg0, arg1, arg2, arg3, arg4); }
		 * 
		 * @Override public Object[] getCellsForGroup(Object[] arg0) {
		 * System.out.println("79"); return super.getCellsForGroup(arg0); }
		 * 
		 * @Override public int getChangesRepaintThreshold() {
		 * System.out.println("80"); return super.getChangesRepaintThreshold();
		 * }
		 * 
		 * @Override public Object[] getChildCells(Object arg0, boolean arg1,
		 * boolean arg2) { System.out.println("81"); return
		 * super.getChildCells(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] getChildCells(Object arg0) {
		 * System.out.println("82"); return super.getChildCells(arg0); }
		 * 
		 * @Override public Object[] getChildEdges(Object arg0) {
		 * System.out.println("83"); return super.getChildEdges(arg0); }
		 * 
		 * @Override public mxPoint getChildOffsetForCell(Object arg0) {
		 * System.out.println("84"); return super.getChildOffsetForCell(arg0); }
		 * 
		 * @Override public Object[] getChildVertices(Object arg0) {
		 * System.out.println("85"); return super.getChildVertices(arg0); }
		 * 
		 * @Override public Object[] getCloneableCells(Object[] arg0) {
		 * System.out.println("86"); return super.getCloneableCells(arg0); }
		 * 
		 * @Override public mxConnectionConstraint
		 * getConnectionConstraint(mxCellState arg0, mxCellState arg1, boolean
		 * arg2) { System.out.println("87"); return
		 * super.getConnectionConstraint(arg0, arg1, arg2); }
		 * 
		 * @Override public mxPoint getConnectionPoint(mxCellState arg0,
		 * mxConnectionConstraint arg1) { System.out.println("88"); return
		 * super.getConnectionPoint(arg0, arg1); }
		 * 
		 * @Override public Object[] getConnections(Object arg0, Object arg1,
		 * boolean arg2) { System.out.println("89"); return
		 * super.getConnections(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] getConnections(Object arg0, Object arg1) {
		 * System.out.println("90"); return super.getConnections(arg0, arg1); }
		 * 
		 * @Override public Object[] getConnections(Object arg0) {
		 * System.out.println("91"); return super.getConnections(arg0); }
		 * 
		 * @Override public Object getCurrentRoot() {
		 * //System.out.println("92"); return super.getCurrentRoot(); }
		 * 
		 * @Override public mxEdgeStyleFunction getDefaultLoopStyle() {
		 * System.out.println("93"); return super.getDefaultLoopStyle(); }
		 * 
		 * @Override public double getDefaultOverlap() {
		 * System.out.println("94"); return super.getDefaultOverlap(); }
		 * 
		 * @Override public Object getDefaultParent() {
		 * //System.out.println("95"); return super.getDefaultParent(); }
		 * 
		 * @Override public Object[] getDeletableCells(Object[] arg0) {
		 * System.out.println("96"); return super.getDeletableCells(arg0); }
		 * 
		 * @Override public Object getDropTarget(Object[] arg0, Point arg1,
		 * Object arg2) { System.out.println("97"); return
		 * super.getDropTarget(arg0, arg1, arg2); }
		 * 
		 * @Override public String getEdgeValidationError(Object arg0, Object
		 * arg1, Object arg2) { System.out.println("98"); return
		 * super.getEdgeValidationError(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] getEdges(Object arg0, Object arg1, boolean
		 * arg2, boolean arg3, boolean arg4, boolean arg5) {
		 * System.out.println("99"); return super.getEdges(arg0, arg1, arg2,
		 * arg3, arg4, arg5); }
		 * 
		 * @Override public Object[] getEdges(Object arg0, Object arg1, boolean
		 * arg2, boolean arg3, boolean arg4) { System.out.println("100"); return
		 * super.getEdges(arg0, arg1, arg2, arg3, arg4); }
		 * 
		 * @Override public Object[] getEdges(Object arg0, Object arg1) {
		 * System.out.println("101"); return super.getEdges(arg0, arg1); }
		 * 
		 * @Override public Object[] getEdges(Object arg0) {
		 * System.out.println("102"); return super.getEdges(arg0); }
		 * 
		 * @Override public Object[] getEdgesBetween(Object arg0, Object arg1,
		 * boolean arg2) { System.out.println("103"); return
		 * super.getEdgesBetween(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] getEdgesBetween(Object arg0, Object arg1) {
		 * System.out.println("104"); return super.getEdgesBetween(arg0, arg1);
		 * }
		 * 
		 * @Override public Object[] getFoldableCells(Object[] arg0, boolean
		 * arg1) { System.out.println("105"); return
		 * super.getFoldableCells(arg0, arg1); }
		 * 
		 * @Override public mxRectangle getGraphBounds() {
		 * System.out.println("106"); return super.getGraphBounds(); }
		 * 
		 * @Override public int getGridSize() { //System.out.println("107");
		 * return super.getGridSize(); }
		 * 
		 * @Override public String getImage(mxCellState arg0) {
		 * System.out.println("108"); return super.getImage(arg0); }
		 * 
		 * @Override public List<mxImageBundle> getImageBundles() {
		 * System.out.println("109"); return super.getImageBundles(); }
		 * 
		 * @Override public void getImageBundles(List<mxImageBundle> arg0) {
		 * System.out.println("110"); super.getImageBundles(arg0); }
		 * 
		 * @Override public String getImageFromBundles(String arg0) {
		 * System.out.println("111"); return super.getImageFromBundles(arg0); }
		 * 
		 * @Override public Object[] getIncomingEdges(Object arg0, Object arg1)
		 * { System.out.println("112"); return super.getIncomingEdges(arg0,
		 * arg1); }
		 * 
		 * @Override public Object[] getIncomingEdges(Object arg0) {
		 * System.out.println("113"); return super.getIncomingEdges(arg0); }
		 * 
		 * @Override public String getLabel(Object arg0) {
		 * System.out.println("114"); return super.getLabel(arg0); }
		 * 
		 * @Override protected String getLinkForCell(Object arg0) {
		 * System.out.println("115"); return super.getLinkForCell(arg0); }
		 * 
		 * @Override public mxRectangle getMaximumGraphBounds() {
		 * System.out.println("116"); return super.getMaximumGraphBounds(); }
		 * 
		 * @Override public mxRectangle getMinimumGraphSize() {
		 * System.out.println("117"); return super.getMinimumGraphSize(); }
		 * 
		 * @Override public mxIGraphModel getModel() {
		 * //System.out.println("118"); return super.getModel(); }
		 * 
		 * @Override public Object[] getMovableCells(Object[] arg0) {
		 * System.out.println("119"); return super.getMovableCells(arg0); }
		 * 
		 * @Override public mxMultiplicity[] getMultiplicities() {
		 * System.out.println("120"); return super.getMultiplicities(); }
		 * 
		 * @Override public Object[] getOpposites(Object[] arg0, Object arg1,
		 * boolean arg2, boolean arg3) { System.out.println("121"); return
		 * super.getOpposites(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public Object[] getOpposites(Object[] arg0, Object arg1) {
		 * System.out.println("122"); return super.getOpposites(arg0, arg1); }
		 * 
		 * @Override public mxPoint getOrigin() { System.out.println("123");
		 * return super.getOrigin(); }
		 * 
		 * @Override public Object[] getOutgoingEdges(Object arg0, Object arg1)
		 * { System.out.println("124"); return super.getOutgoingEdges(arg0,
		 * arg1); }
		 * 
		 * @Override public Object[] getOutgoingEdges(Object arg0) {
		 * System.out.println("125"); return super.getOutgoingEdges(arg0); }
		 * 
		 * @Override public double getOverlap(Object arg0) {
		 * System.out.println("126"); return super.getOverlap(arg0); }
		 * 
		 * @Override public mxRectangle getPaintBounds(Object[] arg0) {
		 * System.out.println("127"); return super.getPaintBounds(arg0); }
		 * 
		 * @Override public mxRectangle getPreferredSizeForCell(Object arg0) {
		 * System.out.println("128"); return
		 * super.getPreferredSizeForCell(arg0); }
		 * 
		 * @Override public Object[]
		 * getRemovedCellsForChanges(List<mxUndoableChange> arg0) {
		 * System.out.println("129"); return
		 * super.getRemovedCellsForChanges(arg0); }
		 * 
		 * @Override public Object getSelectionCell() {
		 * System.out.println("130"); return super.getSelectionCell(); }
		 * 
		 * @Override public Object[] getSelectionCells() {
		 * System.out.println("131"); return super.getSelectionCells(); }
		 * 
		 * @Override public Object[]
		 * getSelectionCellsForChanges(List<mxUndoableChange> arg0) {
		 * System.out.println("132"); return
		 * super.getSelectionCellsForChanges(arg0); }
		 * 
		 * @Override public int getSelectionCount() { System.out.println("133");
		 * return super.getSelectionCount(); }
		 * 
		 * @Override public mxGraphSelectionModel getSelectionModel() {
		 * System.out.println("134"); return super.getSelectionModel(); }
		 * 
		 * @Override public mxRectangle getStartSize(Object arg0) {
		 * System.out.println("135"); return super.getStartSize(arg0); }
		 * 
		 * @Override public mxStylesheet getStylesheet() {
		 * System.out.println("136"); return super.getStylesheet(); }
		 * 
		 * @Override protected String getTargetForCell(Object arg0) {
		 * System.out.println("137"); return super.getTargetForCell(arg0); }
		 * 
		 * @Override public Object getTerminalForPort(Object arg0, boolean arg1)
		 * { System.out.println("138"); return super.getTerminalForPort(arg0,
		 * arg1); }
		 * 
		 * @Override public mxPoint getTranslateForRoot(Object arg0) {
		 * System.out.println("139"); return super.getTranslateForRoot(arg0); }
		 * 
		 * @Override public mxGraphView getView() { //System.out.println("140");
		 * return super.getView(); }
		 * 
		 * @Override public mxRectangle graphModelChanged(mxIGraphModel arg0,
		 * List<mxUndoableChange> arg1) { System.out.println("141"); return
		 * super.graphModelChanged(arg0, arg1); }
		 * 
		 * @Override public Object groupCells() { System.out.println("142");
		 * return super.groupCells(); }
		 * 
		 * @Override public Object groupCells(Object arg0, double arg1, Object[]
		 * arg2) { System.out.println("143"); return super.groupCells(arg0,
		 * arg1, arg2); }
		 * 
		 * @Override public Object groupCells(Object arg0, double arg1) {
		 * System.out.println("144"); return super.groupCells(arg0, arg1); }
		 * 
		 * @Override public Object groupCells(Object arg0) {
		 * System.out.println("145"); return super.groupCells(arg0); }
		 * 
		 * @Override public void home() { System.out.println("146");
		 * super.home(); }
		 * 
		 * @Override public Object insertEdge(Object arg0, String arg1, Object
		 * arg2, Object arg3, Object arg4) { System.out.println("147"); return
		 * super.insertEdge(arg0, arg1, arg2, arg3, arg4); }
		 * 
		 * @Override public Object insertVertex(Object arg0, String arg1, Object
		 * arg2, double arg3, double arg4, double arg5, double arg6, String
		 * arg7, boolean arg8) { System.out.println("148"); return
		 * super.insertVertex(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7,
		 * arg8); }
		 * 
		 * @Override public Object insertVertex(Object arg0, String arg1, Object
		 * arg2, double arg3, double arg4, double arg5, double arg6, String
		 * arg7) { System.out.println("149"); return super.insertVertex(arg0,
		 * arg1, arg2, arg3, arg4, arg5, arg6, arg7); }
		 * 
		 * @Override public Object insertVertex(Object arg0, String arg1, Object
		 * arg2, double arg3, double arg4, double arg5, double arg6) {
		 * System.out.println("150"); return super.insertVertex(arg0, arg1,
		 * arg2, arg3, arg4, arg5, arg6); }
		 * 
		 * @Override public boolean isAllowDanglingEdges() {
		 * System.out.println("151"); return super.isAllowDanglingEdges(); }
		 * 
		 * @Override public boolean isAllowLoops() { System.out.println("152");
		 * return super.isAllowLoops(); }
		 * 
		 * @Override public boolean isAllowNegativeCoordinates() {
		 * System.out.println("153"); return super.isAllowNegativeCoordinates();
		 * }
		 * 
		 * @Override public boolean isAllowOverlapParent(Object arg0) {
		 * System.out.println("154"); return super.isAllowOverlapParent(arg0); }
		 * 
		 * @Override public boolean isAutoOrigin() { System.out.println("155");
		 * return super.isAutoOrigin(); }
		 * 
		 * @Override public boolean isAutoSizeCell(Object arg0) {
		 * System.out.println("156"); return super.isAutoSizeCell(arg0); }
		 * 
		 * @Override public boolean isAutoSizeCells() {
		 * System.out.println("157"); return super.isAutoSizeCells(); }
		 * 
		 * @Override public boolean isCellBendable(Object arg0) {
		 * System.out.println("158"); return super.isCellBendable(arg0); }
		 * 
		 * @Override public boolean isCellCloneable(Object arg0) {
		 * System.out.println("159"); return super.isCellCloneable(arg0); }
		 * 
		 * @Override public boolean isCellCollapsed(Object arg0) {
		 * System.out.println("160"); return super.isCellCollapsed(arg0); }
		 * 
		 * @Override public boolean isCellConnectable(Object arg0) {
		 * System.out.println("161"); return super.isCellConnectable(arg0); }
		 * 
		 * @Override public boolean isCellDeletable(Object arg0) {
		 * System.out.println("162"); return super.isCellDeletable(arg0); }
		 * 
		 * @Override public boolean isCellDisconnectable(Object arg0, Object
		 * arg1, boolean arg2) { System.out.println("163"); return
		 * super.isCellDisconnectable(arg0, arg1, arg2); }
		 * 
		 * @Override public boolean isCellEditable(Object arg0) {
		 * System.out.println("164"); return super.isCellEditable(arg0); }
		 * 
		 * @Override public boolean isCellFoldable(Object arg0, boolean arg1) {
		 * System.out.println("165"); return super.isCellFoldable(arg0, arg1); }
		 * 
		 * @Override public boolean isCellLocked(Object arg0) {
		 * System.out.println("166"); return super.isCellLocked(arg0); }
		 * 
		 * @Override public boolean isCellMovable(Object arg0) {
		 * System.out.println("167"); return super.isCellMovable(arg0); }
		 * 
		 * @Override public boolean isCellResizable(Object arg0) {
		 * System.out.println("168"); return super.isCellResizable(arg0); }
		 * 
		 * @Override public boolean isCellSelectable(Object arg0) {
		 * System.out.println("169"); return super.isCellSelectable(arg0); }
		 * 
		 * @Override public boolean isCellSelected(Object arg0) {
		 * System.out.println("170"); return super.isCellSelected(arg0); }
		 * 
		 * @Override public boolean isCellVisible(Object arg0) {
		 * //System.out.println("171"); return super.isCellVisible(arg0); }
		 * 
		 * @Override public boolean isCellsBendable() {
		 * System.out.println("172"); return super.isCellsBendable(); }
		 * 
		 * @Override public boolean isCellsCloneable() {
		 * System.out.println("173"); return super.isCellsCloneable(); }
		 * 
		 * @Override public boolean isCellsDeletable() {
		 * System.out.println("174"); return super.isCellsDeletable(); }
		 * 
		 * @Override public boolean isCellsDisconnectable() {
		 * System.out.println("175"); return super.isCellsDisconnectable(); }
		 * 
		 * @Override public boolean isCellsEditable() {
		 * System.out.println("176"); return super.isCellsEditable(); }
		 * 
		 * @Override public boolean isCellsLocked() { System.out.println("177");
		 * return super.isCellsLocked(); }
		 * 
		 * @Override public boolean isCellsMovable() {
		 * System.out.println("178"); return super.isCellsMovable(); }
		 * 
		 * @Override public boolean isCellsResizable() {
		 * System.out.println("179"); return super.isCellsResizable(); }
		 * 
		 * @Override public boolean isCellsSelectable() {
		 * System.out.println("180"); return super.isCellsSelectable(); }
		 * 
		 * @Override public boolean isCloneInvalidEdges() {
		 * System.out.println("181"); return super.isCloneInvalidEdges(); }
		 * 
		 * @Override public boolean isCollapseToPreferredSize() {
		 * System.out.println("182"); return super.isCollapseToPreferredSize();
		 * }
		 * 
		 * @Override public boolean isConnectableEdges() {
		 * System.out.println("183"); return super.isConnectableEdges(); }
		 * 
		 * @Override public boolean isConstrainChild(Object arg0) {
		 * System.out.println("184"); return super.isConstrainChild(arg0); }
		 * 
		 * @Override public boolean isConstrainChildren() {
		 * System.out.println("185"); return super.isConstrainChildren(); }
		 * 
		 * 
		 * 
		 * @Override public boolean isDropEnabled() {
		 * //System.out.println("187"); return super.isDropEnabled(); }
		 * 
		 * @Override public boolean isEdgeLabelsMovable() {
		 * System.out.println("188"); return super.isEdgeLabelsMovable(); }
		 * 
		 * @Override public boolean isEdgeValid(Object arg0, Object arg1, Object
		 * arg2) { System.out.println("189"); return super.isEdgeValid(arg0,
		 * arg1, arg2); }
		 * 
		 * @Override public boolean isEnabled() { System.out.println("190");
		 * return super.isEnabled(); }
		 * 
		 * @Override public boolean isExtendParent(Object arg0) {
		 * System.out.println("191"); return super.isExtendParent(arg0); }
		 * 
		 * @Override public boolean isExtendParents() {
		 * System.out.println("192"); return super.isExtendParents(); }
		 * 
		 * @Override public boolean isExtendParentsOnAdd() {
		 * System.out.println("193"); return super.isExtendParentsOnAdd(); }
		 * 
		 * @Override public boolean isGridEnabled() { System.out.println("194");
		 * return super.isGridEnabled(); }
		 * 
		 * @Override public boolean isHtmlLabel(Object arg0) {
		 * System.out.println("195"); return super.isHtmlLabel(arg0); }
		 * 
		 * @Override public boolean isHtmlLabels() { System.out.println("196");
		 * return super.isHtmlLabels(); }
		 * 
		 * @Override public boolean isKeepEdgesInBackground() {
		 * //System.out.println("197"); return super.isKeepEdgesInBackground();
		 * }
		 * 
		 * @Override public boolean isKeepEdgesInForeground() {
		 * System.out.println("198"); return super.isKeepEdgesInForeground(); }
		 * 
		 * @Override public boolean isLabelClipped(Object arg0) {
		 * System.out.println("199"); return super.isLabelClipped(arg0); }
		 * 
		 * @Override public boolean isLabelMovable(Object arg0) {
		 * System.out.println("200"); return super.isLabelMovable(arg0); }
		 * 
		 * @Override public boolean isLabelsClipped() {
		 * System.out.println("201"); return super.isLabelsClipped(); }
		 * 
		 * @Override public boolean isLabelsVisible() {
		 * System.out.println("202"); return super.isLabelsVisible(); }
		 * 
		 * @Override public boolean isLoop(mxCellState arg0) {
		 * System.out.println("203"); return super.isLoop(arg0); }
		 * 
		 * @Override public boolean isMultigraph() { System.out.println("2074");
		 * return super.isMultigraph(); }
		 * 
		 * @Override public boolean isOrthogonal(mxCellState arg0) {
		 * System.out.println("205"); return super.isOrthogonal(arg0); }
		 * 
		 * @Override public boolean isPort(Object arg0) {
		 * System.out.println("206"); return super.isPort(arg0); }
		 * 
		 * @Override public boolean isPortsEnabled() {
		 * System.out.println("207"); return super.isPortsEnabled(); }
		 * 
		 * @Override public boolean isResetEdgesOnConnect() {
		 * System.out.println("208"); return super.isResetEdgesOnConnect(); }
		 * 
		 * @Override public boolean isResetEdgesOnMove() {
		 * System.out.println("209"); return super.isResetEdgesOnMove(); }
		 * 
		 * @Override public boolean isResetEdgesOnResize() {
		 * System.out.println("210"); return super.isResetEdgesOnResize(); }
		 * 
		 * @Override public boolean isResetViewOnRootChange() {
		 * System.out.println("211"); return super.isResetViewOnRootChange(); }
		 * 
		 * @Override public boolean isSelectionEmpty() {
		 * System.out.println("212"); return super.isSelectionEmpty(); }
		 * 
		 * @Override public boolean isSplitEnabled() {
		 * System.out.println("213"); return super.isSplitEnabled(); }
		 * 
		 * @Override public boolean isSplitTarget(Object arg0, Object[] arg1) {
		 * System.out.println("214"); return super.isSplitTarget(arg0, arg1); }
		 * 
		 * @Override public boolean isSwimlane(Object arg0) {
		 * System.out.println("215"); return super.isSwimlane(arg0); }
		 * 
		 * @Override public boolean isSwimlaneNesting() {
		 * //System.out.println("216"); return super.isSwimlaneNesting(); }
		 * 
		 * @Override public boolean isTerminalPointMovable(Object arg0, boolean
		 * arg1) { System.out.println("217"); return
		 * super.isTerminalPointMovable(arg0, arg1); }
		 * 
		 * @Override public boolean isValidAncestor(Object arg0, Object arg1,
		 * boolean arg2) { System.out.println("218"); return
		 * super.isValidAncestor(arg0, arg1, arg2); }
		 * 
		 * @Override public boolean isValidConnection(Object arg0, Object arg1)
		 * { System.out.println("219"); return super.isValidConnection(arg0,
		 * arg1); }
		 * 
		 * @Override public boolean isValidDropTarget(Object arg0, Object[]
		 * arg1) { System.out.println("220"); return
		 * super.isValidDropTarget(arg0, arg1); }
		 * 
		 * @Override public boolean isValidRoot(Object arg0) {
		 * System.out.println("221"); return super.isValidRoot(arg0); }
		 * 
		 * @Override public boolean isValidSource(Object arg0) {
		 * //System.out.println("222"); return super.isValidSource(arg0); }
		 * 
		 * @Override public boolean isValidTarget(Object arg0) {
		 * System.out.println("223"); return super.isValidTarget(arg0); }
		 * 
		 * @Override public boolean isVertexLabelsMovable() {
		 * System.out.println("224"); return super.isVertexLabelsMovable(); }
		 * 
		 * @Override public Object[] moveCells(Object[] arg0, double arg1,
		 * double arg2, boolean arg3, Object arg4, Point arg5) {
		 * System.out.println("225"); return super.moveCells(arg0, arg1, arg2,
		 * arg3, arg4, arg5); }
		 * 
		 * @Override public Object[] moveCells(Object[] arg0, double arg1,
		 * double arg2, boolean arg3) { System.out.println("226"); return
		 * super.moveCells(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public Object[] moveCells(Object[] arg0, double arg1,
		 * double arg2) { System.out.println("227"); return
		 * super.moveCells(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] orderCells(boolean arg0, Object[] arg1) {
		 * System.out.println("228"); return super.orderCells(arg0, arg1); }
		 * 
		 * @Override public Object[] orderCells(boolean arg0) {
		 * System.out.println("229"); return super.orderCells(arg0); }
		 * 
		 * @Override protected Map<String, Object> postProcessCellStyle(
		 * Map<String, Object> arg0) { System.out.println("230"); return
		 * super.postProcessCellStyle(arg0); }
		 * 
		 * @Override public mxRectangle processChange(mxUndoableChange arg0,
		 * boolean arg1, boolean arg2) { System.out.println("231"); return
		 * super.processChange(arg0, arg1, arg2); }
		 * 
		 * @Override public mxRectangle processChanges(List<mxUndoableChange>
		 * arg0, boolean arg1, boolean arg2) { System.out.println("232"); return
		 * super.processChanges(arg0, arg1, arg2); }
		 * 
		 * @Override public void refresh() { System.out.println("233");
		 * super.refresh(); }
		 * 
		 * @Override public Object[] removeCells() { System.out.println("234");
		 * return super.removeCells(); }
		 * 
		 * @Override public Object[] removeCells(Object[] arg0, boolean arg1) {
		 * System.out.println("235"); return super.removeCells(arg0, arg1); }
		 * 
		 * @Override public Object[] removeCells(Object[] arg0) {
		 * System.out.println("236"); return super.removeCells(arg0); }
		 * 
		 * @Override public Object[] removeCellsFromParent() {
		 * System.out.println("237"); return super.removeCellsFromParent(); }
		 * 
		 * @Override public Object[] removeCellsFromParent(Object[] arg0) {
		 * System.out.println("238"); return super.removeCellsFromParent(arg0);
		 * }
		 * 
		 * @Override public void removeImageBundle(mxImageBundle arg0) {
		 * System.out.println("239"); super.removeImageBundle(arg0); }
		 * 
		 * @Override public void
		 * removePropertyChangeListener(PropertyChangeListener arg0) {
		 * System.out.println("240"); super.removePropertyChangeListener(arg0);
		 * }
		 * 
		 * @Override public void removePropertyChangeListener(String arg0,
		 * PropertyChangeListener arg1) { System.out.println("241");
		 * super.removePropertyChangeListener(arg0, arg1); }
		 * 
		 * @Override public void removeSelectionCell(Object arg0) {
		 * System.out.println("242"); super.removeSelectionCell(arg0); }
		 * 
		 * @Override public void removeSelectionCells(Object[] arg0) {
		 * System.out.println("243"); super.removeSelectionCells(arg0); }
		 * 
		 * @Override protected void removeStateForCell(Object arg0) {
		 * System.out.println("244"); super.removeStateForCell(arg0); }
		 * 
		 * @Override public void repaint() { System.out.println("245");
		 * super.repaint(); }
		 * 
		 * @Override public void repaint(mxRectangle arg0) {
		 * System.out.println("246"); super.repaint(arg0); }
		 * 
		 * @Override public Object resetEdge(Object arg0) {
		 * System.out.println("247"); return super.resetEdge(arg0); }
		 * 
		 * @Override public void resetEdges(Object[] arg0) {
		 * System.out.println("248"); super.resetEdges(arg0); }
		 * 
		 * @Override public Object resizeCell(Object arg0, mxRectangle arg1) {
		 * System.out.println("249"); return super.resizeCell(arg0, arg1); }
		 * 
		 * @Override public Object[] resizeCells(Object[] arg0, mxRectangle[]
		 * arg1) { System.out.println("250"); return super.resizeCells(arg0,
		 * arg1); }
		 * 
		 * @Override public void selectAll() { System.out.println("251");
		 * super.selectAll(); }
		 * 
		 * @Override public void selectAll(Object arg0) {
		 * System.out.println("252"); super.selectAll(arg0); }
		 * 
		 * @Override public void selectCell(boolean arg0, boolean arg1, boolean
		 * arg2) { System.out.println("253"); super.selectCell(arg0, arg1,
		 * arg2); }
		 * 
		 * @Override public void selectCells(boolean arg0, boolean arg1, Object
		 * arg2) { System.out.println("254"); super.selectCells(arg0, arg1,
		 * arg2); }
		 * 
		 * @Override public void selectCells(boolean arg0, boolean arg1) {
		 * System.out.println("255"); super.selectCells(arg0, arg1); }
		 * 
		 * @Override public void selectChildCell() { System.out.println("256");
		 * super.selectChildCell(); }
		 * 
		 * @Override public void selectEdges() { System.out.println("257");
		 * super.selectEdges(); }
		 * 
		 * @Override public void selectEdges(Object arg0) {
		 * System.out.println("258"); super.selectEdges(arg0); }
		 * 
		 * @Override public void selectNextCell() { System.out.println("259");
		 * super.selectNextCell(); }
		 * 
		 * @Override public void selectParentCell() { System.out.println("260");
		 * super.selectParentCell(); }
		 * 
		 * @Override public void selectPreviousCell() {
		 * System.out.println("261"); super.selectPreviousCell(); }
		 * 
		 * @Override public void selectVertices() { System.out.println("262");
		 * super.selectVertices(); }
		 * 
		 * @Override public void selectVertices(Object arg0) {
		 * System.out.println("263"); super.selectVertices(arg0); }
		 * 
		 * @Override public void setAllowDanglingEdges(boolean arg0) {
		 * System.out.println("264"); super.setAllowDanglingEdges(arg0); }
		 * 
		 * @Override public void setAllowLoops(boolean arg0) {
		 * System.out.println("265"); super.setAllowLoops(arg0); }
		 * 
		 * @Override public void setAllowNegativeCoordinates(boolean arg0) {
		 * System.out.println("266"); super.setAllowNegativeCoordinates(arg0); }
		 * 
		 * @Override public void setAlternateEdgeStyle(String arg0) {
		 * System.out.println("267"); super.setAlternateEdgeStyle(arg0); }
		 * 
		 * @Override public void setAutoOrigin(boolean arg0) {
		 * System.out.println("268"); super.setAutoOrigin(arg0); }
		 * 
		 * @Override public void setAutoSizeCells(boolean arg0) {
		 * System.out.println("269"); super.setAutoSizeCells(arg0); }
		 * 
		 * @Override public void setBorder(int arg0) {
		 * System.out.println("270"); super.setBorder(arg0); }
		 * 
		 * @Override public Object[] setCellStyle(String arg0, Object[] arg1) {
		 * System.out.println("271"); return super.setCellStyle(arg0, arg1); }
		 * 
		 * @Override public Object[] setCellStyle(String arg0) {
		 * System.out.println("272"); return super.setCellStyle(arg0); }
		 * 
		 * @Override public Object[] setCellStyleFlags(String arg0, int arg1,
		 * Boolean arg2, Object[] arg3) { System.out.println("273"); return
		 * super.setCellStyleFlags(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public Object[] setCellStyleFlags(String arg0, int arg1,
		 * boolean arg2) { System.out.println("274"); return
		 * super.setCellStyleFlags(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] setCellStyles(String arg0, String arg1,
		 * Object[] arg2) { System.out.println("275"); return
		 * super.setCellStyles(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] setCellStyles(String arg0, String arg1) {
		 * System.out.println("276"); return super.setCellStyles(arg0, arg1); }
		 * 
		 * @Override public void setCellsBendable(boolean arg0) {
		 * System.out.println("277"); super.setCellsBendable(arg0); }
		 * 
		 * @Override public void setCellsCloneable(boolean arg0) {
		 * System.out.println("278"); super.setCellsCloneable(arg0); }
		 * 
		 * @Override public void setCellsDeletable(boolean arg0) {
		 * System.out.println("279"); super.setCellsDeletable(arg0); }
		 * 
		 * @Override public void setCellsDisconnectable(boolean arg0) {
		 * System.out.println("280"); super.setCellsDisconnectable(arg0); }
		 * 
		 * @Override public void setCellsEditable(boolean arg0) {
		 * System.out.println("281"); super.setCellsEditable(arg0); }
		 * 
		 * @Override public void setCellsLocked(boolean arg0) {
		 * System.out.println("282"); super.setCellsLocked(arg0); }
		 * 
		 * @Override public void setCellsMovable(boolean arg0) {
		 * System.out.println("283"); super.setCellsMovable(arg0); }
		 * 
		 * @Override public void setCellsResizable(boolean arg0) {
		 * System.out.println("284"); super.setCellsResizable(arg0); }
		 * 
		 * @Override public void setCellsSelectable(boolean arg0) {
		 * System.out.println("285"); super.setCellsSelectable(arg0); }
		 * 
		 * @Override public void setChangesRepaintThreshold(int arg0) {
		 * System.out.println("286"); super.setChangesRepaintThreshold(arg0); }
		 * 
		 * @Override public void setCloneInvalidEdges(boolean arg0) {
		 * System.out.println("287"); super.setCloneInvalidEdges(arg0); }
		 * 
		 * @Override public void setCollapseToPreferredSize(boolean arg0) {
		 * System.out.println("288"); super.setCollapseToPreferredSize(arg0); }
		 * 
		 * @Override public void setConnectableEdges(boolean arg0) {
		 * System.out.println("289"); super.setConnectableEdges(arg0); }
		 * 
		 * @Override public void setConnectionConstraint(Object arg0, Object
		 * arg1, boolean arg2, mxConnectionConstraint arg3) {
		 * System.out.println("290"); super.setConnectionConstraint(arg0, arg1,
		 * arg2, arg3); }
		 * 
		 * @Override public void setConstrainChildren(boolean arg0) {
		 * System.out.println("291"); super.setConstrainChildren(arg0); }
		 * 
		 * @Override public void setDefaultLoopStyle(mxEdgeStyleFunction arg0) {
		 * System.out.println("292"); super.setDefaultLoopStyle(arg0); }
		 * 
		 * @Override public void setDefaultOverlap(double arg0) {
		 * System.out.println("293"); super.setDefaultOverlap(arg0); }
		 * 
		 * @Override public void setDefaultParent(Object arg0) {
		 * System.out.println("294"); super.setDefaultParent(arg0); }
		 * 
		 * @Override public void setDisconnectOnMove(boolean arg0) {
		 * System.out.println("295"); super.setDisconnectOnMove(arg0); }
		 * 
		 * @Override public void setDropEnabled(boolean arg0) {
		 * System.out.println("296"); super.setDropEnabled(arg0); }
		 * 
		 * @Override public void setEdgeLabelsMovable(boolean arg0) {
		 * System.out.println("297"); super.setEdgeLabelsMovable(arg0); }
		 * 
		 * @Override public void setEnabled(boolean arg0) {
		 * System.out.println("298"); super.setEnabled(arg0); }
		 * 
		 * @Override public void setExtendParents(boolean arg0) {
		 * System.out.println("299"); super.setExtendParents(arg0); }
		 * 
		 * @Override public void setExtendParentsOnAdd(boolean arg0) {
		 * System.out.println("300"); super.setExtendParentsOnAdd(arg0); }
		 * 
		 * @Override public void setGridEnabled(boolean arg0) {
		 * System.out.println("301"); super.setGridEnabled(arg0); }
		 * 
		 * @Override public void setGridSize(int arg0) {
		 * System.out.println("302"); super.setGridSize(arg0); }
		 * 
		 * @Override public void setHtmlLabels(boolean arg0) {
		 * System.out.println("303"); super.setHtmlLabels(arg0); }
		 * 
		 * @Override public void setKeepEdgesInBackground(boolean arg0) {
		 * System.out.println("304"); super.setKeepEdgesInBackground(arg0); }
		 * 
		 * @Override public void setKeepEdgesInForeground(boolean arg0) {
		 * System.out.println("305"); super.setKeepEdgesInForeground(arg0); }
		 * 
		 * @Override public void setLabelsClipped(boolean arg0) {
		 * System.out.println("306"); super.setLabelsClipped(arg0); }
		 * 
		 * @Override public void setLabelsVisible(boolean arg0) {
		 * System.out.println("307"); super.setLabelsVisible(arg0); }
		 * 
		 * @Override public void setMaximumGraphBounds(mxRectangle arg0) {
		 * System.out.println("308"); super.setMaximumGraphBounds(arg0); }
		 * 
		 * @Override public void setMinimumGraphSize(mxRectangle arg0) {
		 * System.out.println("309"); super.setMinimumGraphSize(arg0); }
		 * 
		 * @Override public void setModel(mxIGraphModel arg0) {
		 * System.out.println("310"); super.setModel(arg0); }
		 * 
		 * @Override public void setMultigraph(boolean arg0) {
		 * System.out.println("311"); super.setMultigraph(arg0); }
		 * 
		 * @Override public void setMultiplicities(mxMultiplicity[] arg0) {
		 * System.out.println("312"); super.setMultiplicities(arg0); }
		 * 
		 * @Override public void setOrigin(mxPoint arg0) {
		 * System.out.println("313"); super.setOrigin(arg0); }
		 * 
		 * @Override public void setPortsEnabled(boolean arg0) {
		 * System.out.println("314"); super.setPortsEnabled(arg0); }
		 * 
		 * @Override public void setResetEdgesOnConnect(boolean arg0) {
		 * System.out.println("315"); super.setResetEdgesOnConnect(arg0); }
		 * 
		 * @Override public void setResetEdgesOnMove(boolean arg0) {
		 * System.out.println("316"); super.setResetEdgesOnMove(arg0); }
		 * 
		 * @Override public void setResetEdgesOnResize(boolean arg0) {
		 * System.out.println("317"); super.setResetEdgesOnResize(arg0); }
		 * 
		 * @Override public void setResetViewOnRootChange(boolean arg0) {
		 * System.out.println("318"); super.setResetViewOnRootChange(arg0); }
		 * 
		 * @Override public void setSelectionCell(Object arg0) {
		 * System.out.println("319"); super.setSelectionCell(arg0); }
		 * 
		 * @Override public void setSelectionCells(Collection<Object> arg0) {
		 * System.out.println("320"); super.setSelectionCells(arg0); }
		 * 
		 * @Override public void setSelectionCells(Object[] arg0) {
		 * System.out.println("321"); super.setSelectionCells(arg0); }
		 * 
		 * @Override public void setSplitEnabled(boolean arg0) {
		 * System.out.println("322"); super.setSplitEnabled(arg0); }
		 * 
		 * @Override public void setStylesheet(mxStylesheet arg0) {
		 * System.out.println("323"); super.setStylesheet(arg0); }
		 * 
		 * @Override public void setSwimlaneNesting(boolean arg0) {
		 * System.out.println("324"); super.setSwimlaneNesting(arg0); }
		 * 
		 * @Override public void setVertexLabelsMovable(boolean arg0) {
		 * System.out.println("325"); super.setVertexLabelsMovable(arg0); }
		 * 
		 * @Override public void setView(mxGraphView arg0) {
		 * System.out.println("326"); super.setView(arg0); }
		 * 
		 * @Override public double snap(double arg0) {
		 * //System.out.println("327"); return super.snap(arg0); }
		 * 
		 * @Override public Object splitEdge(Object arg0, Object[] arg1, double
		 * arg2, double arg3) { System.out.println("328"); return
		 * super.splitEdge(arg0, arg1, arg2, arg3); }
		 * 
		 * @Override public Object splitEdge(Object arg0, Object[] arg1, Object
		 * arg2, double arg3, double arg4) { System.out.println("329"); return
		 * super.splitEdge(arg0, arg1, arg2, arg3, arg4); }
		 * 
		 * @Override public Object splitEdge(Object arg0, Object[] arg1) {
		 * System.out.println("330"); return super.splitEdge(arg0, arg1); }
		 * 
		 * @Override public void swapBounds(Object arg0, boolean arg1) {
		 * System.out.println("331"); super.swapBounds(arg0, arg1); }
		 * 
		 * @Override public Object toggleCellStyle(String arg0, boolean arg1,
		 * Object arg2) { System.out.println("332"); return
		 * super.toggleCellStyle(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] toggleCellStyleFlags(String arg0, int arg1,
		 * Object[] arg2) { System.out.println("333"); return
		 * super.toggleCellStyleFlags(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] toggleCellStyleFlags(String arg0, int arg1)
		 * { System.out.println("334"); return super.toggleCellStyleFlags(arg0,
		 * arg1); }
		 * 
		 * @Override public Object[] toggleCellStyles(String arg0, boolean arg1,
		 * Object[] arg2) { System.out.println("335"); return
		 * super.toggleCellStyles(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] toggleCellStyles(String arg0, boolean arg1)
		 * { System.out.println("336"); return super.toggleCellStyles(arg0,
		 * arg1); }
		 * 
		 * @Override public Object[] toggleCells(boolean arg0, Object[] arg1,
		 * boolean arg2) { System.out.println("337"); return
		 * super.toggleCells(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] toggleCells(boolean arg0, Object[] arg1) {
		 * System.out.println("338"); return super.toggleCells(arg0, arg1); }
		 * 
		 * @Override public Object[] toggleCells(boolean arg0) {
		 * System.out.println("339"); return super.toggleCells(arg0); }
		 * 
		 * @Override public void translateCell(Object arg0, double arg1, double
		 * arg2) { System.out.println("340"); super.translateCell(arg0, arg1,
		 * arg2); }
		 * 
		 * @Override public void traverse(Object arg0, boolean arg1,
		 * mxICellVisitor arg2, Object arg3, Set<Object> arg4) {
		 * System.out.println("341"); super.traverse(arg0, arg1, arg2, arg3,
		 * arg4); }
		 * 
		 * @Override public void traverse(Object arg0, boolean arg1,
		 * mxICellVisitor arg2) { System.out.println("342");
		 * super.traverse(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] ungroupCells() { System.out.println("343");
		 * return super.ungroupCells(); }
		 * 
		 * @Override public Object[] ungroupCells(Object[] arg0) {
		 * System.out.println("344"); return super.ungroupCells(arg0); }
		 * 
		 * @Override public void updateAlternateBounds(Object arg0, mxGeometry
		 * arg1, boolean arg2) { System.out.println("345");
		 * super.updateAlternateBounds(arg0, arg1, arg2); }
		 * 
		 * @Override public Object updateCellSize(Object arg0, boolean arg1) {
		 * System.out.println("346"); return super.updateCellSize(arg0, arg1); }
		 * 
		 * @Override public Object updateCellSize(Object arg0) {
		 * System.out.println("347"); return super.updateCellSize(arg0); }
		 * 
		 * @Override public Object[] updateGroupBounds() {
		 * System.out.println("348"); return super.updateGroupBounds(); }
		 * 
		 * @Override public Object[] updateGroupBounds(Object[] arg0, int arg1,
		 * boolean arg2) { System.out.println("349"); return
		 * super.updateGroupBounds(arg0, arg1, arg2); }
		 * 
		 * @Override public Object[] updateGroupBounds(Object[] arg0, int arg1)
		 * { System.out.println("350"); return super.updateGroupBounds(arg0,
		 * arg1); }
		 * 
		 * @Override public Object[] updateGroupBounds(Object[] arg0) {
		 * System.out.println("351"); return super.updateGroupBounds(arg0); }
		 * 
		 * @Override protected void updateOrigin() { System.out.println("352");
		 * super.updateOrigin(); }
		 * 
		 * @Override public String validateCell(Object arg0, Hashtable<Object,
		 * Object> arg1) { System.out.println("353"); return
		 * super.validateCell(arg0, arg1); }
		 * 
		 * @Override public String validateEdge(Object arg0, Object arg1, Object
		 * arg2) { System.out.println("354"); return super.validateEdge(arg0,
		 * arg1, arg2); }
		 */

	}

	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			WebLookAndFeel.install();
			UIManager.setLookAndFeel(WebLookAndFeel.class.getCanonicalName());
			UIManager.setLookAndFeel(new WebLookAndFeel());
			UIManager.setLookAndFeel("com.alee.laf.WebLookAndFeel");
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		mxSwingConstants.SHADOW_COLOR = Color.LIGHT_GRAY;
		mxConstants.W3C_SHADOWCOLOR = "#D3D3D3";
		mxConstants.DEFAULT_FONTSIZE = 24;
		GraphEditor editor = new GraphEditor();
		graphComponent.getGraph().setMultigraph(true);
		graphComponent.getGraph().setAllowLoops(true);
		editor.createFrame(new EditorMenuBar(editor)).setVisible(true);
		getGraphComponent().setConnectable(false);
	}
}